package com.catena.core.annotation;

import com.catena.core.NodeParameter;
import com.catena.core.node.CatenaNode;

import java.lang.annotation.*;

/**
 * Created by hx-pc on 16-2-26.
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface CatenaNodeMethod {

    /**
     * 可以得到所有执行器的key,key全局唯一
     *
     * @return
     */
    String[] key();

    /**
     * 在传入参数的时候,一条线的方法写成一个string,用,隔开
     *
     * @return 一个带有一条线的参数的方法名字
     */
    String[] methods();

    /**
     * 在传入参数的时候,数组,表示一条线上的类
     *
     * @return 一个带有一条线的参数的类名字
     */
    Class<? extends CatenaNode>[] nodes();

    Class<? extends NodeParameter> paramClass() default NodeParameter.class;
}
